《數據可視化和圖形學》專欄建立已然日久,想了好久怎麼去開展這個系列(專欄輸出比碎片化的輸出難多了~):html
總之在糾結中一直遲遲難如下筆。一天,一天.... 草稿箱裏十幾篇總有的,後面想通了。我盡力 在途中獲得你們的意見而後加速改進。那麼就開始咱們的《數據可視化和圖形學》前端
- 介紹圖形學和可視化
- engineer/前端er如何入手
- GPU渲染管線
- webgl介紹 & coding
圖形學:利用數學公式/函數基礎理論來以圖形形式表現
簡單介紹幾點:web
討論圖形學牽扯一點圖像處理,簡單說一下。圖像處理就是圖形學邏輯相反 輸入圖形輸出數學公式/函數。
數據可視化:將數據轉化成爲交互的圖形或圖像等。 數據可視化主要旨在藉助於圖形化⼿段,清晰有效地傳達與溝通訊息算法
在以前談起可視化更多說是歸屬於計算機圖形學CG(computer graphics)一類的,到後來發展勢頭愈來愈強,逐步脫離出來。知識圖譜/醫療等等方向都有數據可視化的應用。
依此的簡單回答:canvas
明確一點 在不一樣的系列的GPU渲染管線存在差別瀏覽器
GPU的編碼同CPU區別 debug不存在的... 無memory交集... 總之你會喜歡上它的~
請看下圖:微信
光柵化:把頂點數據轉換爲片元的過程(簡單理解就是找到圖形並轉換所覆蓋的像素)網絡
着色過程當中通常是線性補充(好比 0-1區間會進行線性補充 0.1 0.2....)框架
WebGL(Web圖形庫)是一個JavaScript API,可在任何兼容的Web瀏覽器中渲染高性能的交互式3D和2D圖形,而無需使用插件。WebGL經過引入一個與OpenGL ES 2.0很是一致的API來作到這一點,該API能夠在HTML5 <canvas>元素中使用。 這種一致性使API能夠利用用戶設備提供的硬件圖形加速。函數
補充說明OpenGL也是渲染API ES是嵌入式的意思(可Google/baidu) 倆者API很是相近能夠去了解一下。鏈接統一後面貼
首先 MDNwebGL相關介紹更全一些 以及 Tutorial (教程) 很是適合入門.你們能夠去學習一下。可是深刻仍是須要參考一些學習資料(能夠本身動手實現一些光線追蹤,折射...圖形學歡迎你)
來吧展現 最小的程序 效果就是繪製一個rect
<!-- 畫布 --> <canvas id="myDiagram" width="200" height="200"></canvas> <!-- webgl utils --> <script src="https://webglfundamentals.org/webgl/resources/webgl-utils.js"></script>
// init shader(vertex,fragment) const vs = ` // vertex shader void main() { gl_Position = vec4(0, 0, 0, 1); // 居中 gl_PointSize = 120.0; //大小 } `; const fs = ` // fragment shader void main() { gl_FragColor = vec4(0, 0, 0, 1); // 黑色 } `; // setup //create program & use program const program = webglUtils.createProgramFromSources(gl, [vs, fs]); gl.useProgram(program); const offset = 0; const count = 1; // 繪製函數 drawArrays // gl.POINTS 內置繪製方式 // offset 偏移 // count 個數 gl.drawArrays(gl.POINTS, offset, count);
so easy webgl就學會了... 哈哈 沒那麼簡單的啦。咱們後續慢慢搞
系列文章的下筆是如此的困難...系列的視頻可如何是好! 你們多提提意見~
後續可視化方向會多一點,數學會多一點,物理會多一點.... 咱們加油!
數學(算法)很美的:quadtree
,cluster-kmeans....
哎呦都是好東西... 我都火燒眉毛寫了(腦補壞笑的表情~)
若是有須要加微信羣的聯繫我 ~