Skip to content
Auto edited this page Jun 22, 2022 · 6 revisions

Angle is meant to be an imperative language maximizing declarative expressability.

It is clear that any wasm language should build upon WebGPU for it's 3d rendering : https://github.com/WebAssembly/WASI/issues/53 “WebGPU is the only universal GPU API that is safe, portable, high level, high performance, and supports modern GPU features like compute shaders.”

We aim to define 3d scenarios on the highest level, reanimating ideas of VRML but with wasp syntax. Object rendering is completely implicit to the point where a scene can be defined as:

{ car, tree, tree, house }

While the exact location and rotation of these objects are obviously under-specified, their size and upright orientation are normalized:

The object liberty requires all entities to have natural size units: a tree should be about 1-50 meters high in the direction "up" etc.

The scene renderer should make as many assumptions as possible, in desired contrast to low level APIs: WebGPU is the newest of the "modern" graphics APIs (e.g. Vulkan, DX12, Metal, Mantle), which I distinguish from the older APIs (OpenGL, DX11) as having explicit command queues opposed to implicit ones.

Initial camera position, lighting etc etc can of cause also be specified explicitly, overwriting default or randomized values.

Union types are useful if random object creation is desired: We may specify palm trees, apple trees, pine trees,... but if a scene contains a bag of trees, these will be randomly selected.

On a lower level imperative angle looks into implementing a direct sub/superset of webgpu: https://gpuweb.github.io/gpuweb/wgsl/#matrix-types However mixing and emitting webgpu binaries would be challenging

Coordinate Systems

Angle uses the coordinate systems of D3D, wgpu and Metal:

Angle shall come with a custom Projective Geometric Algebra

3D splines

non-uniform rational B-spline ("nurb")

https://www.makeuseof.com/what-are-nurbs-curves/

Home

Philosophy

data & code blocks

features

inventions

evaluation

keywords

iteration

tasks

examples

todo : bad ideas and open questions

⚠️ specification and progress are out of sync

Clone this wiki locally