199 lines
6.2 KiB
HTML
Executable File
199 lines
6.2 KiB
HTML
Executable File
<html>
|
|
<head>
|
|
<title>Kepler</title>
|
|
<script src="../media/libs/jquery/jquery.js"></script>
|
|
|
|
|
|
</head>
|
|
<script>
|
|
var kepler;
|
|
var gl;
|
|
</script>
|
|
<script type="module">
|
|
import keplerEngine from '../engine/kepler.js';
|
|
import entity from '../engine/entity.js';
|
|
import material from '../engine/material.js';
|
|
import sampler2D from '../engine/sampler2D.js';
|
|
import samplerCube from '../engine/samplerCube.js';
|
|
|
|
import mesh from '../engine/mesh.js';
|
|
import viewport from '../engine/viewport.js';
|
|
import {matrix4} from '../engine/math.js';
|
|
import template from '../engine/renderPasses/template.js';
|
|
import scene from '../engine/scene.js';
|
|
|
|
kepler = new keplerEngine();
|
|
|
|
var ViewPort = new viewport("keplerEngine");
|
|
|
|
ViewPort.scene = new scene();
|
|
|
|
kepler.assimpLoader.load( "demo.json", ViewPort.scene );
|
|
|
|
var light = new entity( );
|
|
|
|
light.name = "skylight";
|
|
light.transform.position = [0, 20.1, -20.01];
|
|
light.type = "skyLight";
|
|
//light.type = "pointLight";
|
|
light.transform.direction = [0, -4, -0.01];
|
|
//light.showFrustum = true;
|
|
light.degrees = 60;
|
|
|
|
|
|
ViewPort.scene.addEntity( light );
|
|
|
|
|
|
//ViewPort.system.setRenderMode("deferred");
|
|
|
|
ViewPort.system.reflectionSampler = new samplerCube();
|
|
ViewPort.system.reflectionSampler.addTexture(kepler.resources.getTexture("cubemaps-1024/positive_x.png"), gl.TEXTURE_CUBE_MAP_POSITIVE_X);
|
|
ViewPort.system.reflectionSampler.addTexture(kepler.resources.getTexture("cubemaps-1024/negative_x.png"), gl.TEXTURE_CUBE_MAP_NEGATIVE_X);
|
|
ViewPort.system.reflectionSampler.addTexture(kepler.resources.getTexture("cubemaps-1024/negative_y.png"), gl.TEXTURE_CUBE_MAP_POSITIVE_Y);
|
|
ViewPort.system.reflectionSampler.addTexture(kepler.resources.getTexture("cubemaps-1024/positive_y.png"), gl.TEXTURE_CUBE_MAP_NEGATIVE_Y);
|
|
ViewPort.system.reflectionSampler.addTexture(kepler.resources.getTexture("cubemaps-1024/positive_z.png"), gl.TEXTURE_CUBE_MAP_POSITIVE_Z);
|
|
ViewPort.system.reflectionSampler.addTexture(kepler.resources.getTexture("cubemaps-1024/negative_z.png"), gl.TEXTURE_CUBE_MAP_NEGATIVE_Z);
|
|
|
|
|
|
var materialNames = ["plasticpattern1", "scuffed-plastic", "rustediron-streaks", "octostone", "paint-peeling", "wornpaintedcement", "pockedconcrete1", "hardwood-brown-planks", "darktiles1"];
|
|
|
|
|
|
for(var c = 0; c < 6; c++) {
|
|
|
|
|
|
var materialName = '';
|
|
|
|
var x = (270 * c);
|
|
|
|
createMeshInstance( materialName, [x-600, 0, 0], c, ViewPort);
|
|
|
|
}
|
|
|
|
|
|
|
|
function createMeshInstance(textureName, position, index, currentViewport ) {
|
|
console.log(textureName);
|
|
|
|
var diffuseTexture = kepler.resources.getTexture( "pbr-1024/"+textureName+"/"+textureName+"-albedo.png" );
|
|
var diffuseSampler = new sampler2D();
|
|
diffuseSampler.addTexture(diffuseTexture);
|
|
|
|
var normalTexture = kepler.resources.getTexture( "pbr-1024/"+textureName+"/"+textureName+"-normal.png" );
|
|
var normalSampler = new sampler2D();
|
|
normalSampler.addTexture(normalTexture);
|
|
|
|
var roughnessTexture = kepler.resources.getTexture( "pbr-512/"+textureName+"/"+textureName+"-roughness"+".png" );
|
|
var roughnessSampler = new sampler2D();
|
|
roughnessSampler.addTexture(roughnessTexture);
|
|
|
|
|
|
var instanceMaterial = new material();
|
|
|
|
//instanceMaterial.addTexture(diffuseSampler);
|
|
//instanceMaterial.addNormal(normalSampler);
|
|
//instanceMaterial.addRoughness(roughnessSampler);
|
|
//instanceMaterial.shadingModelID = material.id;
|
|
instanceMaterial.diffuseColor = [130/256,170/256,211/256];
|
|
instanceMaterial.metallic = index / 6;
|
|
instanceMaterial.alpha = 1;
|
|
instanceMaterial.create();
|
|
instanceMaterial.roughness = .2;
|
|
|
|
console.log(currentViewport.scene);
|
|
|
|
//copyMesh
|
|
var oldEntity = ViewPort.scene.getEntityByName("GrayInlay");
|
|
var oldMesh = oldEntity.mesh;
|
|
|
|
var meshCopy = new mesh();
|
|
// old way
|
|
//meshCopy.createMeshFromArrays( oldMesh.indices,
|
|
// oldMesh.vertices,
|
|
// oldMesh.normals,
|
|
// oldMesh.textureCoordinates,
|
|
// oldMesh.tangents,
|
|
// oldMesh.binormals );
|
|
|
|
meshCopy.copyMesh( oldMesh );
|
|
meshCopy.addMaterial(instanceMaterial);
|
|
|
|
|
|
|
|
var cloneEntity = new entity();
|
|
|
|
cloneEntity.parent = ViewPort.scene.entitys[5].parent;
|
|
cloneEntity.addMesh( meshCopy );
|
|
cloneEntity.name = textureName;
|
|
cloneEntity.transform.position = position;
|
|
|
|
cloneEntity.transform.update();
|
|
|
|
currentViewport.scene.addEntity( cloneEntity );
|
|
|
|
}
|
|
|
|
ViewPort.scene.getEntityByName("GrayInlay").mesh.material.alpha = 0;
|
|
|
|
kepler.addViewport( ViewPort );
|
|
|
|
|
|
|
|
// Material
|
|
var groundMaterial = new material();
|
|
|
|
// Samplers
|
|
var normalTexture = kepler.resources.getTexture("0_floorTiles_ddn.png");
|
|
var normalSampler = new sampler2D();
|
|
normalSampler.addTexture(normalTexture);
|
|
|
|
var diffuseTexture = kepler.resources.getTexture("0_floorTiles_diff.png");
|
|
var diffuseSampler = new sampler2D();
|
|
diffuseSampler.addTexture(diffuseTexture);
|
|
|
|
groundMaterial.addTexture(diffuseSampler);
|
|
groundMaterial.addNormal(normalSampler);
|
|
//groundMaterial.addRoughness(normalSampler);
|
|
|
|
// Properties
|
|
groundMaterial.diffuseColor = [179/256,199/256,217/256];
|
|
groundMaterial.alpha = 1;
|
|
groundMaterial.reflection = 0.2;
|
|
groundMaterial.roughness = 0.2;
|
|
groundMaterial.metalic = 0.2;
|
|
groundMaterial.uvMultiplier = 6;
|
|
|
|
// Cube mesh
|
|
var cubeMesh = ViewPort.primitives.createCube(10);
|
|
|
|
cubeMesh.addMaterial(groundMaterial);
|
|
|
|
// Cube Entity
|
|
var cubeEntity = new entity( );
|
|
cubeEntity.addMesh( cubeMesh );
|
|
cubeEntity.name = "wireframe cube";
|
|
cubeEntity.transform.position = [0, -10, 0];
|
|
cubeEntity.transform.update();
|
|
|
|
ViewPort.scene.addEntity( cubeEntity );
|
|
|
|
|
|
var skyMaterial = new material();
|
|
|
|
|
|
skyMaterial.roughness = 0.4;
|
|
skyMaterial.diffuseColor = [179/256,199/256,217/256];
|
|
skyMaterial.alpha = 1;
|
|
skyMaterial.uvMultiplier = 6;
|
|
skyMaterial.shadingModelID = 100.0;
|
|
|
|
|
|
ViewPort.scene.getEntityByName("GrayInlay").mesh.material.diffuseColor = [1,1,1];
|
|
|
|
kepler.application();
|
|
|
|
</script>
|
|
<body style="margin: 0;">
|
|
<img src="../media/textures/logo.png" style="position: absolute;left:0; top:10px;" >
|
|
<canvas id="keplerEngine" style="width: 100%; height: 100%;"></canvas>
|
|
</body>
|
|
</html> |