summaryrefslogtreecommitdiffstats
path: root/experimental/webgl/helloqt.js
diff options
context:
space:
mode:
Diffstat (limited to 'experimental/webgl/helloqt.js')
-rw-r--r--experimental/webgl/helloqt.js213
1 files changed, 0 insertions, 213 deletions
diff --git a/experimental/webgl/helloqt.js b/experimental/webgl/helloqt.js
deleted file mode 100644
index d0ae216..0000000
--- a/experimental/webgl/helloqt.js
+++ /dev/null
@@ -1,213 +0,0 @@
-var shadow = false;
-
-var container = document.getElementById("container");
-var camera = null;
-var scene = new THREE.Scene();
-var renderer = new THREE.WebGLRenderer({ antialias: false /*true*/ });
-var cbTexture;
-var cbScene;
-var cbCamera;
-var cbUniforms = {
- dy: { type: "f", value: 0 }
-};
-var cb;
-var logo;
-var spotlight;
-
-var viewSize = {
- w: 0,
- h: 0,
- update: function () {
- viewSize.w = window.innerWidth;// / 2;
- viewSize.h = window.innerHeight;// / 2;
- }
-};
-
-var onResize = function (event) {
- viewSize.update();
- if (!camera) {
- camera = new THREE.PerspectiveCamera(60, viewSize.w / viewSize.h, 0.01, 100);
- } else {
- camera.aspect = viewSize.w / viewSize.h;
- camera.updateProjectionMatrix();
- }
- renderer.setSize(viewSize.w, viewSize.h);
-};
-
-var setupCheckerboard = function () {
- cbTexture = new THREE.WebGLRenderTarget(512, 512,
- { minFilter: THREE.LinearFilter,
- magFilter: THREE.LinearFilter,
- format: THREE.RGBFormat });
- cbScene = new THREE.Scene();
- cbCamera = new THREE.OrthographicCamera(-1, 1, 1, -1, -100, 100);
- var geom = new THREE.PlaneGeometry(2, 2);
- var material = new THREE.ShaderMaterial({
- uniforms: cbUniforms,
- vertexShader: document.getElementById("vsChecker").textContent,
- fragmentShader: document.getElementById("fsChecker").textContent
- });
- var mesh = new THREE.Mesh(geom, material);
- cbScene.add(mesh);
-};
-
-var renderCheckerboard = function () {
- cbUniforms.dy.value += 0.01;
- renderer.render(cbScene, cbCamera, cbTexture, true);
-};
-
-var generateLogo = function () {
- var geom = new THREE.Geometry();
- var idx = 0;
- for (var i = 0; i < qtlogo.length; i += 18) {
- geom.vertices.push(new THREE.Vector3(qtlogo[i], qtlogo[i+1], qtlogo[i+2]));
- var n1 = new THREE.Vector3(qtlogo[i+3], qtlogo[i+4], qtlogo[i+5]);
- geom.vertices.push(new THREE.Vector3(qtlogo[i+6], qtlogo[i+7], qtlogo[i+8]));
- var n2 = new THREE.Vector3(qtlogo[i+9], qtlogo[i+10], qtlogo[i+11]);
- geom.vertices.push(new THREE.Vector3(qtlogo[i+12], qtlogo[i+13], qtlogo[i+14]));
- var n3 = new THREE.Vector3(qtlogo[i+15], qtlogo[i+16], qtlogo[i+17]);
- geom.faces.push(new THREE.Face3(idx, idx+1, idx+2, [n1, n2, n3]));
- idx += 3;
- }
- return geom;
-};
-
-var setupScene = function () {
- if (shadow)
- renderer.shadowMapEnabled = true;
-
- setupCheckerboard();
- var geom = new THREE.PlaneGeometry(4, 4);
- var material = new THREE.MeshPhongMaterial({ ambient: 0x060606,
- color: 0x40B000,
- specular: 0x03AA00,
- shininess: 10,
- map: cbTexture });
- cb = new THREE.Mesh(geom, material);
- if (shadow)
- cb.receiveShadow = true;
-// cb.rotation.x = -Math.PI / 3;
- scene.add(cb);
-
- geom = generateLogo();
- material = new THREE.MeshPhongMaterial({ ambient: 0x060606,
- color: 0x40B000,
- specular: 0x03AA00,
- shininess: 10 });
- logo = new THREE.Mesh(geom, material);
- logo.position.z = 2;
- logo.rotation.x = Math.PI;
- if (shadow)
- logo.castShadow = true;
- scene.add(logo);
-
- spotlight = new THREE.SpotLight(0xFFFFFF);
- spotlight.position.set(0, 0.5, 4);
- scene.add(spotlight);
-
- if (shadow) {
- spotlight.castShadow = true;
- spotlight.shadowCameraNear = 0.01;
- spotlight.shadowCameraFar = 100;
- spotlight.shadowDarkness = 0.5;
- spotlight.shadowMapWidth = 1024;
- spotlight.shadowMapHeight = 1024;
- }
-
- camera.position.z = 4;
-};
-
-var render = function () {
- requestAnimationFrame(render);
- renderCheckerboard();
- renderer.render(scene, camera);
- logo.rotation.y += 0.01;
-};
-
-var pointerState = {
- x: 0,
- y: 0,
- active: false,
- touchId: 0
-};
-
-var onMouseDown = function (e) {
- e.preventDefault();
- if (pointerState.active)
- return;
-
- if (e.changedTouches) {
- var t = e.changedTouches[0];
- pointerState.touchId = t.identifier;
- pointerState.x = t.clientX;
- pointerState.y = t.clientY;
- } else {
- pointerState.x = e.clientX;
- pointerState.y = e.clientY;
- }
- pointerState.active = true;
-};
-
-var onMouseUp = function (e) {
- e.preventDefault();
- if (!pointerState.active)
- return;
-
- if (e.changedTouches) {
- for (var i = 0; i < e.changedTouches.length; ++i)
- if (e.changedTouches[i].identifier == pointerState.touchId) {
- pointerState.active = false;
- break;
- }
- } else {
- pointerState.active = false;
- }
-};
-
-var onMouseMove = function (e) {
- e.preventDefault();
- if (!pointerState.active)
- return;
-
- var x, y;
- if (e.changedTouches) {
- for (var i = 0; i < e.changedTouches.length; ++i)
- if (e.changedTouches[i].identifier == pointerState.touchId) {
- x = e.changedTouches[i].clientX;
- y = e.changedTouches[i].clientY;
- break;
- }
- } else {
- x = e.clientX;
- y = e.clientY;
- }
- if (x === undefined)
- return;
-
- var dx = x - pointerState.x;
- var dy = y - pointerState.y;
- pointerState.x = x;
- pointerState.y = y;
- dx /= 100;
- dy /= -100;
- spotlight.target.position.set(spotlight.target.position.x + dx,
- spotlight.target.position.y + dy,
- 0);
-};
-
-var main = function () {
- container.appendChild(renderer.domElement);
- onResize();
- window.addEventListener("resize", onResize);
- window.addEventListener("mousedown", onMouseDown);
- window.addEventListener("touchstart", onMouseDown);
- window.addEventListener("mouseup", onMouseUp);
- window.addEventListener("touchend", onMouseUp);
- window.addEventListener("touchcancel", onMouseUp);
- window.addEventListener("mousemove", onMouseMove);
- window.addEventListener("touchmove", onMouseMove);
- setupScene();
- render();
-};
-
-main();