Appearance
My First Triangle
Charm can be used through the core classes Camera, Scene, Node, WebGPURenderer and Material to directly construct and manipulate geometry and shading. In this particular example we construct a single triangle through the Mesh class and render it with the WebGPURenderer
js
import {
Camera,
Scene,
Node,
WebGPURenderer,
Material,
getDevice,
} from "@tmrw-realityos/charm";
export async function ready() {
// get the html canvas, create a camera and start the render
const canvas = document.querySelector("canvas");
if (canvas == null) {
return;
}
const device = await getDevice();
const camera = new Camera();
const renderer = new WebGPURenderer(device, canvas);
// create a single triangle mesh
const mesh = renderer.newMesh();
mesh.positions = [-0.2, 0.2, 0, -0.2, -0.2, 0, 0.2, -0.2, 0];
mesh.mustUpdate = true;
// create a node for our mesh together with a simple unlit material
const node = new Node();
node.mesh = mesh;
node.material = new Material();
node.material.model = "unlit";
// create a scene for our single node and begin render it
const scene = new Scene();
scene.root.addChild(node);
renderer.render(scene, camera);
}