3D graphics renderer for web applications using Web Assembly and WGPU
Dang, Minh (2024)
Dang, Minh
2024
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2024051612537
https://urn.fi/URN:NBN:fi:amk-2024051612537
Tiivistelmä
The primary objective of this thesis was to develop a new 3D graphics engine based on a cross-platform contemporary graphics API to replace recent web graphics solutions. Furthermore, it could be used as a starter for becoming a back-end renderer for desktop and mobile applications.
To achieve the outcomes, the engine was built on Rust and WGPU to take advantage of multi-platform support, memory safety, and a web-friendly ecosystem. The solution could be separated into two parts: an engine as the backend renderer and an application as the output presentation. The engine had been developed according to WGPU and WebGPU documentation. It has essential pipeline configurations and supports input buffers of vertex, uniform, and image.
From the application perspective, it could run on modern desktop operating systems (Window, Linux, and MacOS), and the Web via Web Assembly. Moreover, the window management (Winit) used in the application is the most advanced library in the market. For instance, it could support inputs from keyboard, mouse, and touchscreen. Hence, there was not a hindrance with camera controls when ported on different platforms. Furthermore, an asset importer has been added to the application. By having its support, numerous assets could be seamlessly rendered using the built-in asset importer.
At the beginning of the thesis, it started with an essential acknowledgment of Rust and WGPU. Although there was some experience with computer graphics, working with a new programming language and its memory-borrowing concept still created a significant impact on the thesis process. Besides the fact, the overall outcome was satisfied with the high compatibility of Web Frameworks and excellent performance when running on the Web.
To achieve the outcomes, the engine was built on Rust and WGPU to take advantage of multi-platform support, memory safety, and a web-friendly ecosystem. The solution could be separated into two parts: an engine as the backend renderer and an application as the output presentation. The engine had been developed according to WGPU and WebGPU documentation. It has essential pipeline configurations and supports input buffers of vertex, uniform, and image.
From the application perspective, it could run on modern desktop operating systems (Window, Linux, and MacOS), and the Web via Web Assembly. Moreover, the window management (Winit) used in the application is the most advanced library in the market. For instance, it could support inputs from keyboard, mouse, and touchscreen. Hence, there was not a hindrance with camera controls when ported on different platforms. Furthermore, an asset importer has been added to the application. By having its support, numerous assets could be seamlessly rendered using the built-in asset importer.
At the beginning of the thesis, it started with an essential acknowledgment of Rust and WGPU. Although there was some experience with computer graphics, working with a new programming language and its memory-borrowing concept still created a significant impact on the thesis process. Besides the fact, the overall outcome was satisfied with the high compatibility of Web Frameworks and excellent performance when running on the Web.