-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
322 lines (281 loc) · 15.5 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
<!DOCTYPE html>
<html lang="en">
<head>
<!--#// ______ _____ _________ _____ _____-->
<!--#// / /_ / / \___ / / /__/ /-->
<!--#// / \/ / ___ / / / / ___-->
<!--#// / / \ / /\__\ / /___ / ___ / / \-->
<!--#// _/____ / \___ / _\___ _/_______ / _/___ / _/___ / _\___/\_-->
<!--#// revised on 19/11/2016 All rights reserved by @NeZha-->
<title>NeZha's Website</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.bootcss.com/foundation/5.5.3/css/foundation.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/foundation/5.5.3/js/vendor/jquery.js"></script>
<script src="https://cdn.bootcss.com/foundation/5.5.3/js/foundation.min.js"></script>
<script src="https://cdn.bootcss.com/foundation/5.5.3/js/vendor/modernizr.js"></script>
<link rel="stylesheet" href="https://static.runoob.com/assets/foundation-icons/foundation-icons.css">
</head>
<body>
<div class="row">
<div class="medium-12 columns">
<h1>Wecome to NeZha's Website</h1>
<div class="row">
<div class="large-3 medium-3 columns">
<img src="pic/myphoto.png" alt="Paris" width="170" height="170">
</div>
<div class="medium-7 columns">
<h4>ZJ Jiang (NeZha)</h4>
<p>Bacholar of EE at Shanghai Maritime University</p>
<p>I worked for IBM and EA in 2012-2014 as software engineer(mainly focus on Graphics& 3D printing tech).
Principle 3D algorithm developer & architect at Lubansoft in 2015.
Join in Hypereal as an Algorithm Researcher in aspect of VR& AR from 2016 till now. </p>
</div>
<div class="medium-2 columns"></div>
</div>
</div>
</div>
<script>
demos = document.getElementsByClassName("demopage");
function changePage(v) {
for (var d in demos){
demos[d].src = "";
}
switch (v) {
case "demo0":
document.getElementById("demo0").src="fluids/index.html";
break;
case "demo1":
document.getElementById("demo1").src="examples/particles_beta.html";
break;
case "demo2":
document.getElementById("demo2").src="examples/pbd_cloth_ball.html";
break;
case "demo3":
document.getElementById("demo3").src="examples/softbody_deform.html";
break;
case "demo4":
document.getElementById("demo4").src="examples/projective_cloth_basic.html";
break;
case "demo5":
document.getElementById("demo5").src="examples/cloth_basic.html";
break;
case "demo6":
document.getElementById("demo6").src="examples/mammoth.html";
break;
case "demo7":
document.getElementById("demo7").src="examples/texture_area_light.html";
break;
case "demo8":
document.getElementById("demo8").src="";
break;
default:
break;
}
}
</script>
<div class="row">
<p>
My sustained interests in <span style="color:cornflowerblue">Computer Graphics & Computatinal Geometry</span> for
<span style="color:chocolate">Physics-Based Animation & Interactive 3D modeling</span>, particularly on real-time approaches.
Including rigid body, cloth, softbody(continuum material), fluids and fracturing simulation also Numerical methods for science.
<br/>
Have a great passion and Worked on <span style="color:goldenrod">Volume-Based Sculpturing </span>& <span style="color:dodgerblue">VR Helmet-Handle Tracking</span> System in Hypereal as well.
<br/>
On the aspect of Machine learning. I am currently working on <span style="color:darkviolet">Computer Vision <i class="fi-eye"></i></span>.
Including <span style="color:seagreen">scene semantics & classification & segmentation and reconstruction.</span> etc. based on RGB-D camera.
<br/>
Recently I am attracted into AI as well. And put some effort to <span style="color:slateblue">GAME AI</span>.
<br/>
Feel free to contact me: <i class="fi-mail"></i> <a herf="mailto:[email protected]">[email protected]</a>
<br/>
ConvNetCoffee: <a herf="http://callmenezha.github.io/convnetcoffee/image_regression.html">http://callmenezha.github.io/convnetcoffee/image_regression.html</a>
</p>
<ul class="tabs" data-tab>
<h3>Here is my work</h3>
<li class="tab-title active"><a href="#home">Physics Simulation & 3D Graphics</a></li>
<li class="tab-title"><a href="#menu0">Computer Vision & Machine Learning</a></li>
<li class="tab-title"><a href="#menu1">JS CUDA Library</a></li>
</ul>
<div class="tabs-content">
<!-- Physics Simulation & 3D Graphics -->
<div class="content active" id="home">
<ul class="accordion" data-accordion>
<li class="accordion-navigation">
<a href="#demo0" onclick="changePage('demo0')"><i class="fi-play-circle"></i> Fluids simulation</a>
<div class="content active">
<iframe id="demo0" class="demopage" src="fluids/index.html" width="100%" height="600"}></iframe>
</div>
</li>
<li class="accordion-navigation">
<a href="#demo1" onclick="changePage('demo1')"><i class="fi-play-circle"></i> Wind tunnel with 4K particles</a>
<div class="content">
<iframe id="demo1" class="demopage" src="" width="100%" height="600"}></iframe>
</div>
</li>
<li class="accordion-navigation">
<a href="#demo2" onclick="changePage('demo2')"><i class="fi-play-circle"></i> Cloth & Ball coupling</a>
<div class="content">
<iframe id="demo2" class="demopage" src="" width="100%" height="600"></iframe>
</div>
</li>
<li class="accordion-navigation">
<a href="#demo3" onclick="changePage('demo3')"><i class="fi-play-circle"></i> Softbody simulation - Mario</a>
<div class="content">
<iframe id="demo3" class="demopage" src="" width="100%" height="600"></iframe>
</div>
</li>
<li class="accordion-navigation">
<a href="#demo4" onclick="changePage('demo4')"><i class="fi-play-circle"></i> Cloth by Projective Method</a>
<div class="content">
<iframe id="demo4" class="demopage" src="" width="100%" height="600"></iframe>
</div>
</li>
<li class="accordion-navigation">
<a href="#demo5" onclick="changePage('demo5')"><i class="fi-play-circle"></i> Cloth by Position Based Method</a>
<div class="content">
<iframe id="demo5" class="demopage" src="" width="100%" height="600"></iframe>
</div>
</li>
<li class="accordion-navigation">
<a href="#demo6" onclick="changePage('demo6')"><i class="fi-play-circle"></i> Mammoth SSAO</a>
<div class="content">
<iframe id="demo6" class="demopage" src="" width="100%" height="600"></iframe>
</div>
</li>
<li class="accordion-navigation">
<a href="#demo7" onclick="changePage('demo7')"><i class="fi-play-circle"></i> Deferred Rendering Area-lights <span style="color: red;">(with music <i class="fi-music"></i>)</span> -contributed</a>
<div class="content">
<iframe id="demo7" class="demopage" src="" width="100%" height="600"></iframe>
</div>
</li>
<li class="accordion-navigation">
<a href="#demo8" onclick="changePage('demo8')"><i class="fi-foot"></i> More work is in progress... :P</a>
<div class="content">
<iframe id="demo8" class="demopage" src="" width="100%" height="600"></iframe>
</div>
</li>
</ul>
</div>
<!-- Physics Simulation & 3D Graphics -->
<div class="content" id="menu0">
<h3> Depth image segmentation & resoning. </h3>
<img src="pic/depth-segmentation.gif" alt="GIF">
</br></br>
<h3> Some open-source </h3>
<h4> Simple DBSCAN </h4>
This is a C++ implementation of DBSCAN (Density-based spatial clustering of applications with noise) algorithm
</br>
<p>[<a href="https://github.com/CallmeNezha/SimpleDBSCAN">https://github.com/CallmeNezha/SimpleDBSCAN</a>]</p>
</div>
<!-- JS CUDA -->
<div class="content" id="menu1">
<h2>What is JC? ( JS CUDA )</h2>
<p>[<a href="https://github.com/CallmeNezha/JSCUDA/">https://github.com/CallmeNezha/JSCUDA/</a>]</p>
<p>JC is a NodeJs module for doing linear algebra (which mainly consists of vector and matrix operations) based on CUDA.
</p>
<p>It means you can easily use Javascript to bring your GPU down computing linear problems in parallel. In my experience, JC is <strong>5 - 1000 times faster</strong> than traditional CPU method thanks to huge development of modern GPU, and JC doesn't merely binding the CUDA ToolKit for using, it hides the relatively uncomprehensive BLAS routine or solvers' routine(in development) under the hood.
</p>
<p><strong>And most important one is</strong>: User can quickly deploy JC with very little effort instead of learning enormous and complicate API provided by CUDA Toolkit which is writen in C++.
</p>
<h2>What JC can do?</h2>
<ul>
<li><p>Level-1</p>
<ol>
<li>arbitrary dimension vector add</li>
<li>arbitrary dimension vector dot product</li>
<li>arbitrary dimension vector Euclidean Norm</li>
<li>arbitrary dimension vector multiply scalar</li>
</ol>
</li>
<li><p>Level-2</p>
<ol>
<li>arbitrary dimension vector tensor product</li>
<li>arbitrary dimension matrix add</li>
<li>arbitrary dimension matrix multiply scalar</li>
<li>arbitrary dimension matrix multiply vector</li>
</ol>
</li>
<li><p>Level-3</p>
<ol>
<li>arbitrary dimension matrix multiply matrix</li>
<li>arbitrary dimension matrix multiply matrix ( Batched )</li>
</ol>
</li>
<li><p>Solvers</p>
<ol>
<li>quick dense n x n matrix inverse, n is less than 32 ( Batched )</li>
<li>dense n x n matrix LU decomposition & solve linear system & matrix inverse ( Batched )</li>
<li>dense n x n matrix QR decomposition & solve linear system & matrix inverse ( Batched ) <em>Coming soon</em></li>
<li>Sparse matrix solvers <em>Coming soon</em></li>
</ol>
</li>
</ul>
<h2>Requirements</h2>
<ul>
<li>[x] Make sure your graphic card support CUDA v7.5 and compute capability is higher than 2.0, if you are not sure please refer to [<a href="https://developer.nvidia.com/cuda-gpus">https://developer.nvidia.com/cuda-gpus</a>]</li>
<li>[x] Have Nodejs v6.2.X installed</li>
</ul>
<h2>How to install?</h2>
<h3>Pre-build</h3>
<p>copy files in git ./Pre-build to any directory you like for example E:/Example/
1. <strong>jc.node</strong> // NodeJs module
2. <strong>JSCUDA.dll</strong> // C++ binding part
3. <strong>JC.js</strong> // Javascript part
</p>
<h3>Build from source</h3>
<h2>Usage</h2>
<p>After copied related files to your module directory, all you have to do is require 'JC.js' as regular Node module.
</p>
<p>Javascript:
</p>
<pre><code class="lang-javascript">var JC = require( ${path_of_JC.js} )</code></pre>
<p>Coffeescript:
</p>
<pre><code class="lang-javascript">JC = require( ${path_of_JC.js} )</code></pre>
<p><strong>Attension:</strong> If you ignore the extension '.js', Node will require 'jc.node' instead, and 'jc.node' is Node's C++ binding part which offer basic data structures as well as basic linear functions supporting 'JC.js'. If you only want to use JC, please add '.js' explicitly.
</p>
<p>Then you can use it like this
</p>
<p>Coffeescript:
</p>
<pre><code class="lang-coffeescript">#@@@ You can understand Host as CPU part, Device as GPU part)
JC = require( ${path_of_JC.js} )
testLength = 100
JC.cudaDeviceInit() # Preface
vAh = new Float32Array( ( Math.random() for num in [0...len] ) ) # Host memory
vAd = new JC.VectorD( vAh.length, vAh ) # Assign vAh value to Device memory
vBd = new JC.VectorD( vAh.length, vAh ) # Assgin same value to vBd
vAd.add( vBd ) # vAd = vAd + vBd
vAd.copyTo( vAd.length, vAh ) # Copy value to Host from Device memory
# Although Device memory will be freed automatically,
# it is recommanded to 'destroy' it explicitly,
# give back device memory to GPU for better performance
vAd.destroy()
console.log( #{ vAh } ) # output the result
JC.cudaDeviceReset() # Before program exits</code></pre>
<h2>Unit test</h2>
<p>If you want to do unit tests, or take them as examples, please goto "./Pre-build" folder and copy whole "unit_test" folder into your module directory which contains ["JC.js", "jc.node", "JSCUDA.dll"].<br>Then open the terminal in module's directory and input
</p>
<pre><code>E:\expamles>npm install</code></pre>
<p>to install dependencies:
1. mocha ^2.5.3 ( JavaScript test framework )
2. colors ^1.1.2 ( Color and style outputs in node.js console )
( It's totally OK to install them globally as npm package by <code>npm install mocha -g</code> and <code>npm install colors -g</code> )
</p>
<p>And now you can run test:
</p>
<pre><code>E:\expamles>mocha ${testname}.js</code></pre>
</p>
<h2>API Reference & Guide</h2>
<p>[<a href="https://github.com/CallmeNezha/JSCUDA/wiki/">https://github.com/CallmeNezha/JSCUDA/wiki/</a>]
</div>
</div>
</div>
<!-- JS CUDA -->
<script>
$(document).ready(function() {
$(document).foundation();
})
</script>
</body>