From 7a4456bacb6c1c1a271b953bde883781507f4201 Mon Sep 17 00:00:00 2001 From: Alexander Rose <alex.rose@rcsb.org> Date: Mon, 26 Mar 2018 18:11:12 -0700 Subject: [PATCH] wip, render-test app, draw a red triangle, yeah --- .gitignore | 4 +- .vscode/tasks.json | 5 +++ package-lock.json | Bin 173219 -> 394484 bytes package.json | 7 +++- src/apps/render-test/index.tsx | 4 +- src/apps/render-test/state.ts | 67 +++++++++++++++++++++++++++++++++ src/apps/render-test/ui.tsx | 13 +++++-- web/render-test/index.html | 12 ++++++ 8 files changed, 105 insertions(+), 7 deletions(-) create mode 100644 src/apps/render-test/state.ts create mode 100644 web/render-test/index.html diff --git a/.gitignore b/.gitignore index d15a641df..615776276 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,6 @@ node_modules/ debug.log npm-debug.log -*.sublime-workspace \ No newline at end of file +*.sublime-workspace + +web/render-test/index.js \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index b3225a1f2..c59f2cf6c 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -9,6 +9,11 @@ "problemMatcher": [ "$tsc" ] + }, + { + "type": "npm", + "script": "app-render-test", + "problemMatcher": [] } ] } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 8accbb5e8342dc83b43ce2b2d221725c385dfff8..df4d12aac59e87d7c5b3d2ca578886a074b52f2e 100644 GIT binary patch delta 84615 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 delta 1272 zcmYL{eN5G56vua-bDn!I_f60{e3@V)@~SBsI#3*9tTL%wk*O(8Q+y)~(#?ENYB^sZ zu%B{LQZz_RoRL5BK)QzE8#0i*Du@`CLtNfWOCV)P*T4Gz?0Y`nmxo&i6xG<vwxJR3 zu$V<uKER9$PttrSSqF3BQRU<Y7ZLY7!DzE2GEtd+?=&=9M}|>ROEenuW678|zM*K) zL~UN1oZ&LxO&wz8a63B8o9U&>EL`&p7;jcanuosp4UE>^Zu73W5X|`}i-C`fK!<VL z;xRHV#GA>dmpM$wm1)XIX=*n!S`J#w8@F7_?7Zh9BfPWK@OPC-gMvD%EOJ19;N4EB zk>EaH0qOR_N+nCj!Y+`BG0+Cw=vKj;mIa}__W?NhVkZuh4HLizO!06@3SNW^Ev-}G zB=Ul4?J)+2IJvH#+|v6N<fA0ag3};5bHEO=ejfY{l9CFED1*{q8}Nm6sFZ~tz#Szg zRzif5nX6$S@S3$yA%{PP??Li5LxD}^<UNHu^aX^Y^e~ho@81iW?K{xHH*>X(_j&`A zDW@P>u6+f~Ahm_ywaT1Qh_T7Oau}y2;spExvZ@M}Ykqtdj>@_7@EP#0wcwMEXH~6| z&%H{4G({^PNPDcBgpxE#A@G!B?cz*7*o+N9eR#V+kV3+TY8cOcS#1*kE6V5Ooaw4Y z%HC610jsI%c_mFt)D9*2@2di2Pp0aX8!J?zlI~Sc#g}hXmzDhSsp{0cAzNLS@p)=S zki7b}`VrVy9JsD3Q6o?um8vKY-;6+#;nk{kkvxvV2ra{7u-eMrgA~Fknc(L8?KF;a z*Xc+un+5%N)3@{-uUku_IQt{r->7uDW$0wwN>aH9cY<Ur!+Is7SK=9vKCAF|l%eY} z;5$1D1!QqHwrMd9EJ6v}gQ1GA_CT=VpX}zU<AFE-9Ka*Ipcuaq%TX)@KKGsSJl%GH zLcut>ehlLS4OifP;EkuyCTo8}L<y<Joy1`cctx}i_bD+O@jgg#GoD3xa0mM#kGzNV zl7Al)6yNT^pT&5LE0nbKU<JrvMGLjW1yP)Z(}T&!p?#^2Oa00r4IWyDTxwGTWb{Dl z25}9h?TV)lp^Ln_H;_>MU2@9)NXi4*Je-oWY<+>|T6h9j-0Ye`PGiii7<oI6s)CMB zr6`b=*C-j}crv{~+~iWhM#f2(Je)~gb{>*S4PswL^8!;zr&yPCZzKRwS+p3q*Qvuf z?Oz=xRiDr#B~P{lz+`C-y@OJ3P%TJTJ}p7<70>}CX~$?R@Yx@znKz-f%k~P|rKINs z-BXfKMVl2rsisD0yhwXM+L|a1q_>$)Tf};cZX^5Jsa`7XQWNm{zvv7b9dyblsq1Ux z=6HC_6d)tBBbsx%C|hRtP;Xy}3DIFBk)hgek;Dj1Amt<U7LbGlJ&GjfB|R6pCP_b% q%dhM4Bqdqe3mluKLX4|h{#TS~m$b(!hnsbZUCy`ZcpLvo7VCfDfb=Z@ diff --git a/package.json b/package.json index 2a5a30992..6329b7aac 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,8 @@ "build": "tsc", "watch": "tsc -watch", "test": "jest", - "script": "node build/node_modules/script.js" + "script": "node build/node_modules/script.js", + "app-render-test": "webpack build/node_modules/apps/render-test/index.js --mode development -o web/render-test/index.js" }, "jest": { "moduleFileExtensions": [ @@ -64,7 +65,9 @@ "tslint": "^5.9.1", "typescript": "^2.7.2", "uglify-js": "^3.3.12", - "util.promisify": "^1.0.0" + "util.promisify": "^1.0.0", + "webpack": "^4.2.0", + "webpack-cli": "^2.0.13" }, "dependencies": { "argparse": "^1.0.10", diff --git a/src/apps/render-test/index.tsx b/src/apps/render-test/index.tsx index 2647621e8..246502b30 100644 --- a/src/apps/render-test/index.tsx +++ b/src/apps/render-test/index.tsx @@ -5,7 +5,9 @@ */ import UI from './ui' +import State from './state' import * as React from 'react' import * as ReactDOM from 'react-dom' -ReactDOM.render(<UI/>, document.getElementById('app')); \ No newline at end of file +const state = new State() +ReactDOM.render(<UI state={state} />, document.getElementById('app')); \ No newline at end of file diff --git a/src/apps/render-test/state.ts b/src/apps/render-test/state.ts new file mode 100644 index 000000000..36f9c6192 --- /dev/null +++ b/src/apps/render-test/state.ts @@ -0,0 +1,67 @@ +/** + * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info. + * + * @author Alexander Rose <alexander.rose@weirdbyte.de> + */ + +import REGL = require('regl'); +import * as glContext from 'mol-gl/context' +import { Camera } from 'mol-gl/camera' +import { Vec3 } from 'mol-math/linear-algebra' + +export default class State { + regl: REGL.Regl + + initRegl (container: HTMLDivElement) { + const regl = glContext.create({ + container, + extensions: [ + 'OES_texture_float', + 'OES_texture_float_linear', + // 'ext_disjoint_timer_query', + 'EXT_blend_minmax' + ], + // profile: true + }) + + const camera = Camera.create(regl, container, { + center: Vec3.create(0, 0, 0) + }) + + const drawTriangle = regl({ + frag: ` + void main() { + gl_FragColor = vec4(1, 0, 0, 1); + }`, + + vert: ` + precision mediump float; + uniform mat4 projection, view; + attribute vec3 position; + void main () { + gl_Position = projection * view * vec4(position, 1.0); + }`, + + attributes: { + position: [[0, -1, 0], [-1, 0, 0], [1, 1, 0]] + }, + + count: 3 + }) + + regl.frame(() => { + camera.update((state: any) => { + if (!camera.isDirty()) return + console.log(state, camera) + regl.clear({color: [0, 0, 0, 1]}) + drawTriangle() + }, undefined) + }) + + this.regl = regl + } + + constructor() { + + } +} diff --git a/src/apps/render-test/ui.tsx b/src/apps/render-test/ui.tsx index 09f3215c8..fd88f2f5f 100644 --- a/src/apps/render-test/ui.tsx +++ b/src/apps/render-test/ui.tsx @@ -5,11 +5,18 @@ */ import * as React from 'react' +import State from './state' + +export default class Root extends React.Component<{ state: State }, { }> { + private canvasContainer: HTMLDivElement | null = null; + + componentDidMount() { + if (this.canvasContainer) this.props.state.initRegl(this.canvasContainer) + } -export default class Root extends React.Component { render() { - return <div style={{ position: 'absolute', top: 0, right: 0, left: 0, bottom: 0, overflow: 'hidden' }}> - + return <div ref={elm => this.canvasContainer = elm} style={{ position: 'absolute', top: 0, right: 0, left: 0, bottom: 0, overflow: 'hidden' }}> + </div> } } \ No newline at end of file diff --git a/web/render-test/index.html b/web/render-test/index.html new file mode 100644 index 000000000..2e144b297 --- /dev/null +++ b/web/render-test/index.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=1" /> + <title>Mol* Render Test</title> + </head> + <body> + <div id="app"></div> + <script src="./index.js"></script> + </body> +</html> \ No newline at end of file -- GitLab