claygl/example/normalmap.html

60 lines
1.8 KiB
HTML

<html>
<head>
<meta charset="utf-8">
<script src="../dist/claygl.js"></script>
</head>
<body>
<canvas width="1200" height="640" id="main"></canvas>
<script type="text/javascript">
var Shader = clay.Shader;
var renderer = new clay.Renderer({
canvas: document.getElementById('main')
});
var scene = new clay.Scene;
var camera = new clay.camera.Perspective({
aspect: renderer.getViewportAspect(),
far: 500
});
var cube = new clay.geometry.Cube({
widthSegments: 10,
heightSegments: 10
});
cube.generateUniqueVertex();
cube.generateTangents();
var shader = clay.shader.library.get('clay.standard');
var material = new clay.Material({
shader: shader
});
material.set('normalMap', loadTexture('assets/textures/normal_map.jpg'));
material.set('diffuseMap', loadTexture('assets/textures/diffuse.jpg'));
camera.position.set(0, 0, 4);
var mesh = new clay.Mesh({
geometry: cube,
material: material
});
scene.add(mesh);
var light = new clay.light.Directional({
position: new clay.Vector3(10, 10, 10)
})
light.lookAt(mesh.position);
scene.add(light);
setInterval(function () {
renderer.render(scene, camera);
mesh.rotation.rotateY(Math.PI / 500);
}, 20);
function loadTexture(src) {
var texture = new clay.Texture2D();
texture.load(src);
return texture;
}
</script>
</body>
</html>