All Projects → jdiemke → aisa

jdiemke / aisa

Licence: MIT license
AISA is a Software 3D Engine written in TypeScript.

Programming Languages

javascript
184084 projects - #8 most used programming language
typescript
32286 projects

Projects that are alternatives of or similar to aisa

Bgfx
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Stars: ✭ 10,252 (+42616.67%)
Mutual labels:  engine, rendering
Innocenceengine
Cross-platform modern game engine.
Stars: ✭ 149 (+520.83%)
Mutual labels:  engine, rendering
Physics3d
A 3D physics engine
Stars: ✭ 101 (+320.83%)
Mutual labels:  engine, rendering
Vulkan2drenderer
Easy to use 2D rendering engine using Vulkan API as backend.
Stars: ✭ 60 (+150%)
Mutual labels:  engine, rendering
delphi3d-engine
A 3D-graphic and game engine for Delphi and Windows.
Stars: ✭ 52 (+116.67%)
Mutual labels:  engine, rendering
Nebula Trifid
Nebula Trifid
Stars: ✭ 62 (+158.33%)
Mutual labels:  engine, rendering
Tinyrenderer
A brief computer graphics / rendering course
Stars: ✭ 11,776 (+48966.67%)
Mutual labels:  engine, rendering
CLUSEK-RT
Vulkan based C++ ray-tracing game engine.
Stars: ✭ 24 (+0%)
Mutual labels:  engine, rendering
Yave
Yet Another Vulkan Engine
Stars: ✭ 211 (+779.17%)
Mutual labels:  engine, rendering
Ogre
scene-oriented, flexible 3D engine (C++, Python, C#, Java)
Stars: ✭ 2,582 (+10658.33%)
Mutual labels:  engine, rendering
Glumpy
Python+Numpy+OpenGL: fast, scalable and beautiful scientific visualization
Stars: ✭ 882 (+3575%)
Mutual labels:  engine, rendering
DuEngine
An efficient interactive C++ renderer for ShaderToy-alike demos with 2D/3D/CubeMap/Video/Camera/LightField/Volume textures. (Partially used in my I3D 2018 papers)
Stars: ✭ 62 (+158.33%)
Mutual labels:  engine, rendering
Renderhelp
⚡️ 可编程渲染管线实现,帮助初学者学习渲染
Stars: ✭ 494 (+1958.33%)
Mutual labels:  engine, rendering
Gears Vk
Powerful low-level C++20 rendering framework for Vulkan 1.2, including Real-Time Ray Tracing (RTX) support, built atop Auto-Vk.
Stars: ✭ 71 (+195.83%)
Mutual labels:  engine, rendering
Mtlpp
C++ Metal wrapper
Stars: ✭ 425 (+1670.83%)
Mutual labels:  engine, rendering
Tinyraycaster
486 lines of C++: old-school FPS in a weekend
Stars: ✭ 1,383 (+5662.5%)
Mutual labels:  engine, rendering
D3D12Renderer
Custom renderer and physics engine written from scratch in C++/Direct3D 12.
Stars: ✭ 17 (-29.17%)
Mutual labels:  engine, rendering
Vxr
General purpose engine written in C++ with emphasis on materials rendering (PBR, clear coat, anisotropy, iridescence)
Stars: ✭ 181 (+654.17%)
Mutual labels:  engine, rendering
Squirrel-Engine
Multithreaded C/C++ Game Engine
Stars: ✭ 90 (+275%)
Mutual labels:  engine, rendering
Nexus
🖼️ Actionscript 3, GPU accelerated 2D game engine using Stage3D
Stars: ✭ 12 (-50%)
Mutual labels:  engine, rendering

AISA

Build Status GitHub stars GitHub forks GitHub issues GitHub license Twitter

AISA is a Software 3D Engine written in TypeScript. The only prerequisite for AISA to run properly is a HTML5 compatible web browser and a fast CPU (as you can guess JavaScript is not as fast as native code still it is running with a decent frame rate on my mobile phone). No WebGL is required. AISA does all the computations needed to rasterize a 3D scene in pure JavaScript by rendering to an offscreen framebuffer. This framebuffer is then copied to the backing framebuffer of a HTML Canvas that is setup as a render target.

Why a Software 3D Engine in TypeScript / JavaScript?

In fact it does not make sense to write your own 3D Engine in TypeScript since there are much better alternatvis like WebGL and OpenGL. This project has a pure educational purpose. My initial intention was to teach me some TypeScript and since I love computer graphics and always wanted to write my own 3D Engine from scratch I used this opportunity. Hence this project contains a lot of elementary algorithms from then field of computer graphics including clipping, triangle rasterization, geometric transformations and so forth.

Demos

How to get

Type the following command into your shell:

> git clone https://github.com/jdiemke/AISA.git

This will create a copy of the repository in your current working directory. Move into the project's folder and install the dependecies:

> cd AISA
> npm install

How to build

Type the following command into your shell:

> npm run build

Move into the project's dist/ folder and open index.html.

How to serve

Type the following command into your shell:

> npm run serve

And open http://localhost:8080/webpack-dev-server/ in your favourite web browser.

Features

  • Light & Material
    • Directional Light
    • Point Light
    • Spot Light
    • Ambient / Diffuse / Specular Color Components
  • Model Loading
    • Wavefront OBJ (JSON)
    • MD2 (Quake 2)
  • Post Processing
    • Noise
    • Glitch
    • Motion Blur
    • Radial Blur
    • Pixelization
    • Glow
  • Sprites
    • Transparency
    • Linear Filtering
    • Bilinear Filtering
  • Speed-Up Techniques
    • Backface Culling
    • View Frustum Culling
    • Bounding Volumes
      • Sphere
  • Flat Shading
  • Shadows
    • Projection Shadows
  • Perspective Correct Texture Mapping
  • Spherical Environment Mapping
  • Near Plane & Viewport Clipping
  • Lens Flare
  • Billboarding
  • Soft Particles
  • Camera
    • Controllable First Person Camera
    • Key Frame Animated Camera
  • Web Audio API

Backlog

Tools used

References

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].