Archived
js first commit
This commit is contained in:
1 parent
46d23393e3
commit
05adccd1e3
1 file changed
+1
@@ -0,0 +1 @@
|
||||
function View3d(t,e){function n(){for(var t=[],e=[],n=[],r=[],o=[],a=[],s=[],l=0,p=0;p<h.faces.length;p++){var d=h.faces[p],f=d.points;d.computeFaceNormal();for(var g=d.normal,m=f[0],x=f[1],v=2;v<f.length;v++){var y=d.points[v];t.push(m.x+d.offset*g[0]),t.push(m.y+d.offset*g[1]),t.push(m.z+d.offset*g[2]),r.push(g[0]),r.push(g[1]),r.push(g[2]),o.push(-g[0]),o.push(-g[1]),o.push(-g[2]),e.push((200+m.xf)/View3d.wTexFront),e.push((200+m.yf)/View3d.hTexFront),n.push((200+m.xf)/View3d.wTexBack),n.push((200+m.yf)/View3d.hTexBack),a.push(l),s.push(l),l++,t.push(x.x+d.offset*g[0]),t.push(x.y+d.offset*g[1]),t.push(x.z+d.offset*g[2]),r.push(g[0]),r.push(g[1]),r.push(g[2]),o.push(-g[0]),o.push(-g[1]),o.push(-g[2]),e.push((200+x.xf)/View3d.wTexFront),e.push((200+x.yf)/View3d.hTexFront),n.push((200+x.xf)/View3d.wTexBack),n.push((200+x.yf)/View3d.hTexBack),a.push(l),s.push(l+1),l++,t.push(y.x+d.offset*g[0]),t.push(y.y+d.offset*g[1]),t.push(y.z+d.offset*g[2]),r.push(g[0]),r.push(g[1]),r.push(g[2]),o.push(-g[0]),o.push(-g[1]),o.push(-g[2]),e.push((200+y.xf)/View3d.wTexFront),e.push((200+y.yf)/View3d.hTexFront),n.push((200+y.xf)/View3d.wTexBack),n.push((200+y.yf)/View3d.hTexBack),a.push(l),s.push(l-1),l++,x=y}}var w=new Float32Array(t),P=new Float32Array(e),S=new Float32Array(n);i(u,w,3,u.FLOAT,"aVertexPosition"),i(u,P,2,u.FLOAT,"aTexCoordFront"),i(u,S,2,u.FLOAT,"aTexCoordBack");var T=u.createBuffer();u.bindBuffer(u.ELEMENT_ARRAY_BUFFER,T);var E=new Uint8Array(a);u.bufferData(u.ELEMENT_ARRAY_BUFFER,E,u.STATIC_DRAW);var z=new Float32Array(r);i(u,z,3,u.FLOAT,"aVertexNormal"),c=E.length}function i(t,e,n,i,r){var o=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,o),t.bufferData(t.ARRAY_BUFFER,e,t.STATIC_DRAW);var a=t.getAttribLocation(t.program,r);t.vertexAttribPointer(a,n,i,!1,0,0),t.enableVertexAttribArray(a)}function r(t){t=t||1;const e=l.clientWidth*t|0,n=l.clientHeight*t|0;l.width===e&&l.height===n||(l.width=e,l.height=n)}function o(t){0===View3d.touchtime?View3d.touchtime=(new Date).getTime():(new Date).getTime()-View3d.touchtime<800?(View3d.currentAngle[0]=0,View3d.currentAngle[1]=0,View3d.scale=1,View3d.touchtime=0):View3d.touchtime=(new Date).getTime(),t.preventDefault();var e=t.changedTouches?t.changedTouches[0]:t;const n=e.clientX,i=e.clientY,r=t.target.getBoundingClientRect();r.left<=n&&n<r.right&&r.top<=i&&i<r.bottom&&(View3d.lastX=n,View3d.lastY=i,View3d.dragging=!0)}function a(t){t.preventDefault(),View3d.dragging=!1}function s(t){t.preventDefault();var e=t.changedTouches?t.changedTouches[0]:t;const n=e.clientX,i=e.clientY;if(View3d.dragging)if(t.shiftKey||void 0!==t.scale&&1!==t.scale)void 0===t.scale?(View3d.scale+=(i-View3d.lastY)/300,View3d.scale=Math.max(View3d.scale,0)):View3d.scale=t.scale;else{const e=300/t.target.height,r=e*(n-View3d.lastX),o=e*(i-View3d.lastY);View3d.currentAngle[0]=View3d.currentAngle[0]+o,View3d.currentAngle[1]=View3d.currentAngle[1]+r}View3d.lastX=n,View3d.lastY=i}var h=t,l=e,c=0,u=l.getContext("webgl")||l.getContext("experimental-webgl");!function(){!function(){const t=u.createShader(u.VERTEX_SHADER);u.shaderSource(t,vsSource),u.compileShader(t),u.getShaderParameter(t,u.COMPILE_STATUS)||(alert("An error occurred compiling the shader: "+u.getShaderInfoLog(t)),u.deleteShader(t));const e=u.createShader(u.FRAGMENT_SHADER);u.shaderSource(e,fsSource),u.compileShader(e),u.getShaderParameter(e,u.COMPILE_STATUS)||(alert("An error occurred compiling the shader: "+u.getShaderInfoLog(e)),u.deleteShader(e));const n=u.createProgram();u.attachShader(n,t),u.attachShader(n,e),u.linkProgram(n),u.useProgram(n),u.program=n}(),function(){var t=u.createTexture();u.activeTexture(u.TEXTURE0),u.bindTexture(u.TEXTURE_2D,t),u.texImage2D(u.TEXTURE_2D,0,u.RGBA,1,1,0,u.RGBA,u.UNSIGNED_BYTE,new Uint8Array([112,172,243,255]));var e=u.getUniformLocation(u.program,"uSamplerFront");u.uniform1i(e,0),View3d.imageFront=new Image,View3d.imageFront.onload=function(){u.activeTexture(u.TEXTURE0),u.pixelStorei(u.UNPACK_FLIP_Y_WEBGL,1),u.bindTexture(u.TEXTURE_2D,t),u.texParameteri(u.TEXTURE_2D,u.TEXTURE_WRAP_S,u.CLAMP_TO_EDGE),u.texParameteri(u.TEXTURE_2D,u.TEXTURE_WRAP_T,u.CLAMP_TO_EDGE),u.texParameteri(u.TEXTURE_2D,u.TEXTURE_MIN_FILTER,u.LINEAR),u.texImage2D(u.TEXTURE_2D,0,u.RGB,u.RGB,u.UNSIGNED_BYTE,View3d.imageFront),View3d.wTexFront=View3d.imageFront.width,View3d.hTexFront=View3d.imageFront.height,n()},window.document.getElementById("front")&&(View3d.imageFront.src=window.document.getElementById("front").src);var i=u.createTexture();u.activeTexture(u.TEXTURE1),u.bindTexture(u.TEXTURE_2D,i),u.texImage2D(u.TEXTURE_2D,0,u.RGBA,1,1,0,u.RGBA,u.UNSIGNED_BYTE,new Uint8Array([253,236,67,255]));var r=u.getUniformLocation(u.program,"uSamplerBack");u.uniform1i(r,1),View3d.imageBack=new Image,View3d.imageBack.onload=function(){u.activeTexture(u.TEXTURE1),u.pixelStorei(u.UNPACK_FLIP_Y_WEBGL,1),u.bindTexture(u.TEXTURE_2D,i),u.texParameteri(u.TEXTURE_2D,u.TEXTURE_WRAP_S,u.CLAMP_TO_EDGE),u.texParameteri(u.TEXTURE_2D,u.TEXTURE_WRAP_T,u.CLAMLine truncated
|
||||
Reference in new issue
Block a user