0.5.0 • Published 2 years ago
ashes3d v0.5.0
- Press
k
to toggle render mode - Press
q
ande
to adjust aperture (depth of field) - Press
a
andd
to focal length - Press
[
andd]
to adjust exposure
Examples
Features
- Entity–component–system (ECS) architectural
- glTF support
- Physically based rendering (PBR)
- Post effects (WIP)
- Skeleton animation
- Keyframe animation
- HDR
Getting Started
- via CDN
<script src="https://cdn.jsdelivr.net/npm/ashes3d/build/ashes.main.js"></script>
- via npm
npm i ashes3d
Usage
let { Asset, EntityMgr, Camera, vec3, quat, Screen, OrbitControl, MeshRenderer, Filter, Shader, Material, QuadMesh } = Ashes;
let CDN = 'https://but0n.github.io/Ashes/'
Material.SHADER_PATH = CDN + Material.SHADER_PATH;
// DamagedHelmet
let gltf = CDN + 'gltfsamples/DamagedHelmet.glb';
async function main() {
let screen = new Screen('#screen');
screen.bgColor = [0.2,0.2,0.2,1];
let skybox = await Asset.loadCubemap(CDN + 'res/envmap/GoldenGateBridge2/');
let scene = EntityMgr.create('root - (Click each bar which has yellow border to toggle visible)');
// Camera
let mainCamera = EntityMgr.create('camera');
let cam = mainCamera.addComponent(new Camera(screen.width / screen.height));
// Set default position
let cameraTrans = mainCamera.components.Transform;
vec3.set(cameraTrans.translate, 0, 10, 10);
// Add it to scene
scene.appendChild(mainCamera);
// Attach controler
mainCamera.addComponent(new OrbitControl(screen, mainCamera));
document.querySelector('body').appendChild(scene);
// Load a gltf model
let gltfroot = await Asset.loadGLTF(gltf, screen, skybox);
scene.appendChild(gltfroot);
}
main();
Create a quad with texture
// Create an entity
let quad = scene.appendChild(EntityMgr.create('quad'));
// Load a material
let quadMat = await Asset.LoadMaterial('stylize'); // PBR material
// Load a texture
let floor = await Asset.loadTexture(CDN + 'res/textures/floor.png', { minFilter: screen.gl.NEAREST_MIPMAP_NEAREST });
floor.flipY = true;
// Attach texture to material we created
Material.setTexture(quadMat, 'baseColorTexture', floor);
quadMat.shader.macros['HAS_BASECOLOR_MAP'] = '';
// Create a renderer component
let quadMR = new MeshRenderer(screen, new QuadMesh(), quadMat);
// Attach renderer to entity
quad.addComponent(quadMR);
// Set local translate [x, y, z]
quad.components.Transform.translate[1] = -1;
// Set euler angle x, y, z
quat.fromEuler(quad.components.Transform.quaternion, -90, 0, 0);
// The original size of quad is 2x2
vec3.scale(quad.components.Transform.scale, quad.components.Transform.scale, 9);
Deployment
git clone --recursive https://github.com/but0n/Ashes.git
cd Ashes
# if you don't have yarn installed
npm install -g yarn
yarn
yarn dev
0.5.0
2 years ago
0.4.1
3 years ago
0.4.0
3 years ago
0.3.2
4 years ago
0.3.1
4 years ago
0.3.0
4 years ago
0.2.6
4 years ago
0.2.5
5 years ago
0.2.4
5 years ago
0.2.3
5 years ago
0.2.2
5 years ago
0.2.1
5 years ago
0.2.0
5 years ago
0.1.2
5 years ago
0.1.1
5 years ago
0.1.0
5 years ago
0.0.51
5 years ago
0.0.50
5 years ago
0.0.49
5 years ago
0.0.48
5 years ago
0.0.47
5 years ago
0.0.46
5 years ago
0.0.45
5 years ago
0.0.44
5 years ago
0.0.43
5 years ago
0.0.42
5 years ago
0.0.41
5 years ago
0.0.40
5 years ago
0.0.39
5 years ago
0.0.38
5 years ago
0.0.37
5 years ago
0.0.36
5 years ago
0.0.35
5 years ago
0.0.34
5 years ago
0.0.33
5 years ago
0.0.32
5 years ago
0.0.31
5 years ago
0.0.30
5 years ago
0.0.29
5 years ago
0.0.28
5 years ago
0.0.27
5 years ago
0.0.26
5 years ago
0.0.25
5 years ago
0.0.24
5 years ago
0.0.23
5 years ago
0.0.22
5 years ago
0.0.21
5 years ago
0.0.20
5 years ago
0.0.19
5 years ago
0.0.18
5 years ago
0.0.17
5 years ago
0.0.16
5 years ago
0.0.15
5 years ago
0.0.14
5 years ago
0.0.13
5 years ago
0.0.12
5 years ago
0.0.11
5 years ago
0.0.10
5 years ago
0.0.9
5 years ago
0.0.8
5 years ago
0.0.7
5 years ago
0.0.6
5 years ago
0.0.5
5 years ago
0.0.4
5 years ago
0.0.3
5 years ago
0.0.2
5 years ago
0.0.1
5 years ago