• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            string

            string
            posts - 27, comments - 177, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            GPGPU編程快速入門

            Posted on 2020-09-15 00:31 djx_zh 閱讀(10129) 評論(0)  編輯 收藏 引用

            GPGPU編程快速入門

            以將圖像反色處理為例。

            確保chrome 支持WebGL2.0 Compute

            在chrome地址欄輸入 chrome://flags/#enable-webgl2-compute-context 點擊"Enabled", 按提示重啟chrome。

            編寫kernel

            // 0. 函數名glsl_invert, 
            //    src 為輸入圖像(HTMLCanvasElement 或 HTMLImageElement),
            //    dst 為輸出圖像
            function glsl_invert(src, dst){
                return `
                    // 1. 取得 threadid 
                    ivec2 pos = ivec2(thread.xy);
                    // 2. 根據 threadid 從輸入圖像讀入像素
                   vec4 pixel = src[pos.y][pos.x]; 
                   // 3. 將像素反色
                   vec4 invert = vec4(1.0 - pixel.x, 1.0 - pixel.y, 1.0 - pixel.z, 1.0);
                   // 4. 將反色像素存入dst
                   dst[pos.y][pos.x] = invert;     
                `;
            }

            然后在javascript中執行kernel

            //1. 生成一個WebCS實例, canvas將用于顯示圖像 
            let webCS = new WebCS({canvas:$("#canvas2GPU")[0]}); 

            //2. 從glsl_invert函數生成shader實例cs_texture2
            let cs_texture2 = webCS.createShader(glsl_invert, { local_size:[8, 8, 1], params:{src:'texture', 'dst':'texture'}});

            //3. 在GPU上執行cs_texture2
            let texSrc = $('#image000')[0];
            cs_texture2.setGroups(512/8, 512/8, 1).run(texSrc, null);

            //4. 獲得dst指向的texture對象 
            let tex = cs_texture2.getTexture('dst');

            //5. 將tex渲染到默認canvas
            webCS.present(tex);

            //6. 顯示 canvas
            $("#display1")[0].appendChild(webCS.canvas);


            練習

            国产99久久久国产精免费| 久久久久99这里有精品10| 国产成人无码精品久久久免费| 国产 亚洲 欧美 另类 久久| 香蕉久久影院| 蜜桃麻豆www久久| 久久久久久久女国产乱让韩| 国产欧美一区二区久久| 午夜精品久久久久久久无码| 国产亚洲综合久久系列| 伊人久久大香线蕉无码麻豆| 日韩亚洲欧美久久久www综合网| 欧美精品乱码99久久蜜桃| 一本一道久久精品综合| 久久久噜噜噜久久中文福利| 午夜精品久久久久9999高清| 国产精品久久久久一区二区三区| 无码人妻久久一区二区三区免费丨 | 精品久久久久久无码免费| 婷婷综合久久中文字幕蜜桃三电影| 久久九九久精品国产| 久久久精品一区二区三区| 麻豆AV一区二区三区久久| 2021国产精品久久精品| 久久久久久久国产免费看| 国产精品嫩草影院久久| 久久99国产精一区二区三区| 久久精品夜夜夜夜夜久久| 97久久婷婷五月综合色d啪蜜芽| 久久无码AV中文出轨人妻| 久久精品国产99久久久香蕉| 亚洲成人精品久久| 国产精品免费久久久久影院| 51久久夜色精品国产| 色偷偷888欧美精品久久久| 一本伊大人香蕉久久网手机| 久久综合综合久久狠狠狠97色88| 国内精品久久久久| 91久久精品国产成人久久| 久久国产精品一区| 一本久久综合亚洲鲁鲁五月天|